def solution(length, linked_list, k):
    # 找到值为 k 的节点数量
    k_count = linked_list.count(k)

    if k_count == 0:
        return 0  # 如果没有值为 k 的节点，不需要交换

    # 初始化滑动窗口中 k 节点的计数
    current_k_count = 0
    # 计算前 k_count 个元素中有多少个 k
    for i in range(k_count):
        if linked_list[i] == k:
            current_k_count += 1

    # 初始化最小交换次数
    min_swaps = k_count - current_k_count

    # 滑动窗口遍历后续的元素
    for i in range(k_count, length):
        # 添加当前窗口右侧的新元素
        if linked_list[i] == k:
            current_k_count += 1
        # 移除当前窗口左侧的旧元素
        if linked_list[i - k_count] == k:
            current_k_count -= 1

        # 更新最小交换次数
        min_swaps = min(min_swaps, k_count - current_k_count)

    return min_swaps


if __name__ == "__main__":
    # 添加测试用例
    print(solution(5, [1, 2, 1, 2, 1], 2) == 1)
    print(solution(5, [0, 0, 1, 0, 0], 1) == 0)
    print(solution(11, [6, 1, 6, 3, 6, 10, 40, 6, 6, 12, 6], 6) == 3)
